ss = 0
'''
re.match(pattern, string, flags=0)       # 从字符串的起始位置匹配pattern，返回match对象，如果不是起始位置匹配成功的话，match()就返回none。
re.search(pattern, string, flags=0)      # 扫描整个字符串并返回第一个成功的匹配。
re.findall(pattern, string, flags=0)     # 在字符串中找到正则表达式所匹配的所有子串，并返回一个列表,返回match对象，，如果没有找到匹配的，则返回空列表。
re.sub(pattern, repl, string, count=0, flags=0) # 将字符串中的匹配的子串用另一个字符串替换。
re.split(pattern, string, maxsplit=0, flags=0)  # 按照能够匹配的子串将字符串分割后返回列表。

flag有几种用法：
re.IGNORECASE 或 re.I：忽略大小写。
re.MULTILINE 或 re.M：多行模式。影响 ^ 和 $ 的匹配，使其不仅匹配字符串的开始和结束，还能匹配每一行的开始和结束。
re.DOTALL 或 re.S：使 . 匹配所有字符，包括换行符。
re.VERBOSE 或 re.X：允许正则表达式中使用更具可读性的格式，比如注释和空格。
re.ASCII 或 re.A：使 \w, \b, \s, \d 等只匹配 ASCII 字符。
re.LOCALE 或 re.L：根据当前的语言环境设置匹配规则（较少使用，已弃用）。
re.UNICODE 或 re.U：在 Unicode 字符串上进行匹配（这是默认设置）。

这些标志可以单独使用，也可以组合使用。例如，re.IGNORECASE | re.DOTALL。


'''
import re

# match 从头开始匹配的，不以这个开头，哪怕字符串中间出现，也不会匹配成功，失败则返回None

s = 'I study Python3.11 every day'
pattern = '\d\.\d+'
match = re.match(pattern, s, re.I)
print(match)  # 匹配成功，返回一个match对象 <re.Match object; span=(0, 3), match='123'>

s2 = '3.11python i study every day'
match = re.match(pattern, s2, re.I)
print('匹配的起始位置：', match.start())  # 0·
print('匹配的结束位置：', match.end())  # 0
print('匹配区间的位置元素：', match.span())  # 0
print('待匹配的字符串：', match.string)  # 0
print('匹配的数据：', match.group())  # 0
